#include "string.h"

//No se cuando puede ser que la use!!!
void strcrear(string &S){
S=new char[1];
S[0]='\0';
}

void strdestruir(string &S){
delete [] S;
strcrear(S);
}

int strlar(string S){
 int i=0;
 while(S[i]!='\0'){
  i++;
 }
 return i;
}

void reserva(string &destino, int lar){
destino=new char[lar];
}

/*reservar el espacio de destino antes*/
void strcop(string &destino, string origen){              //Copia la cadena 2 en la 1
 int i=0,tam_origen;
 tam_origen=strlar(origen)+1;
 //strdestruir(destino); Lo borro ya que esta funcion reserva espacio y es innecesario (luego se hace una reserva)
 delete []destino;
 reserva(destino,tam_origen);

 while(i<tam_origen){
  destino[i]=origen[i];
  i++;
 }

}

void scan(string &cadena){
    int ind=0;
    string temp;
    reserva(temp,MAX);
    char caract;
    fflush(stdin);
    scanf("%c", &caract);
    while(caract!='\n'&&ind<MAX-1){
        temp[ind]=caract;
        scanf("%c",&caract);
        ind++;
    }
    temp[ind]='\0';
    reserva(cadena,ind);
    strcop(cadena,temp);
    strdestruir(temp);
    fflush(stdin);
}


void print(string cadena){
    int ind=0;
    while(cadena[ind]!='\0'){
        printf("%c", cadena[ind]);
        ind++;
    }
}



bool strmen(string s1, string s2){    //Compara 2 cadenas y devuelve true si la primera es menor alfabeticamente
    bool menor=false,encontre=false;
    int i=0;
    while((!encontre)&&(s1[i]!='\0')&&(s2[i]!='\0')){
        if (s1[i]!=s2[i]){
            encontre=true;
            if(s1[i]<s2[i])
                menor=true;
        }
        i++;
    }
    if((!encontre)&&(s2[i]!='\0'))
        menor=true;
    return menor;
}


bool streq(string s1,string s2){
int i=0;
bool iguales = true;
    while (iguales && (s1[i]!='\0') && (s2[i]!='\0')) {
        if (s1[i]!=s2[i])
            iguales = false;
            i++;
    }
    if ((s1[i]!='\0') || (s2[i]!='\0'))
        iguales = false;
return iguales;
}

//Auxiliares

bool cadenaVac(string cadena){            //Chequea si la cadena ingresada esta vacia
    bool vacia=false;
    if(cadena[0]=='\0')
        vacia=true;
    return vacia;
}

void strcomp(string cadena){  //Imprime espacios hasta llegar a MAX
    int esp;
    esp=strlar(cadena);
    while(esp<MAX-1){
        printf(" ");
        esp++;
    }
}
